JavaMail API ব্যবহার করে Multipart Email পাঠানোর মাধ্যমে আপনি একাধিক কন্টেন্ট টাইপ (যেমন, Text এবং HTML) বা attachments (যেমন ফাইল) একসাথে পাঠাতে পারেন। Multipart ইমেইল ব্যবহার করে আপনি একাধিক অংশে ইমেইলের কন্টেন্ট তৈরি করতে পারেন, এবং এগুলোকে একসাথে ইমেইলের মধ্যে সংযুক্ত করা হয়।
Multipart Email:
এটি একধরনের ইমেইল যেখানে text/plain এবং text/html কন্টেন্ট একত্রে পাঠানো হয় এবং এগুলো আলাদা আলাদা অংশ হিসেবে ইমেইল কন্টেন্টে অন্তর্ভুক্ত থাকে। এমনকি ফাইল অ্যাটাচমেন্টও সহ পাঠানো যেতে পারে।
Multipart Email Structure:
- Text Part: সাধারণ টেক্সট কন্টেন্ট।
- HTML Part: রিচ কন্টেন্ট, যেমন HTML ফরম্যাটে ইমেইল।
- Attachment: একাধিক ফাইল সংযুক্ত করা যেতে পারে।
JavaMail API দিয়ে Multipart Email পাঠানোর উদাহরণ:
এখানে একটি উদাহরণ দেখানো হচ্ছে যেখানে আমরা Text এবং HTML কন্টেন্ট একসাথে এবং একটি ফাইল অ্যাটাচমেন্ট সহ ইমেইল পাঠাচ্ছি।
ধাপ ১: JavaMail API এবং Java Activation Framework অন্তর্ভুক্ত করা
Maven ব্যবহারকারী হলে, আপনাকে JavaMail API এবং Java Activation Framework (JAF) এর ডিপেনডেন্সি পিপিং করতে হবে।
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
ধাপ ২: Multipart Email পাঠানোর উদাহরণ
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
public class MultipartEmailExample {
public static void main(String[] args) {
String host = "smtp.gmail.com"; // Gmail SMTP হোস্ট
final String user = "your-email@gmail.com"; // আপনার ইমেইল অ্যাড্রেস
final String password = "your-email-password"; // আপনার ইমেইল পাসওয়ার্ড
String to = "recipient-email@example.com"; // প্রাপকের ইমেইল অ্যাড্রেস
// SMTP সার্ভারের প্রপার্টি সেট করা
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// সেশন তৈরি করা
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password); // প্রমাণীকরণের জন্য ইমেইল এবং পাসওয়ার্ড প্রদান
}
});
try {
// MimeMessage তৈরি করা
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Test Multipart Email with Text, HTML and Attachment");
// Multipart তৈরি করা
Multipart multipart = new MimeMultipart();
// 1. Text part (টেক্সট কন্টেন্ট)
BodyPart textPart = new MimeBodyPart();
textPart.setText("This is a test email with text and HTML content. Please find the attachment.");
multipart.addBodyPart(textPart);
// 2. HTML part (HTML কন্টেন্ট)
BodyPart htmlPart = new MimeBodyPart();
String htmlContent = "<h1>Welcome to JavaMail API</h1><p>This is an <b>HTML</b> formatted email.</p>";
htmlPart.setContent(htmlContent, "text/html");
multipart.addBodyPart(htmlPart);
// 3. Attachment part (ফাইল অ্যাটাচমেন্ট)
BodyPart attachmentPart = new MimeBodyPart();
String filename = "path/to/your/attachment.txt"; // অ্যাটাচমেন্টের পাথ
FileDataSource source = new FileDataSource(filename);
attachmentPart.setDataHandler(new DataHandler(source));
attachmentPart.setFileName("attachment.txt");
multipart.addBodyPart(attachmentPart);
// পুরো কন্টেন্ট সেট করা
message.setContent(multipart);
// ইমেইল পাঠানো
Transport.send(message);
System.out.println("Email sent successfully!");
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
এখানে কী হচ্ছে?
- Text Part:
- এখানে
text/plainকন্টেন্ট সহ একটি টেক্সট অংশ তৈরি করা হয়েছে। MimeBodyPartব্যবহার করা হয়েছে যেখানেsetText()মেথডের মাধ্যমে সোজা টেক্সট কন্টেন্ট যোগ করা হয়েছে।
- এখানে
- HTML Part:
MimeBodyPartব্যবহার করে HTML কন্টেন্ট তৈরি করা হয়েছে এবং সেটিsetContent()মেথড দিয়ে HTML ফরম্যাটে যোগ করা হয়েছে।text/htmlকন্টেন্ট টাইপ সেট করা হয়েছে যাতে HTML ফরম্যাটে প্রদর্শন হয়।
- Attachment Part:
MimeBodyPartব্যবহার করে ফাইল অ্যাটাচমেন্ট তৈরি করা হয়েছে।FileDataSourceব্যবহার করে নির্দিষ্ট ফাইল অ্যাটাচ করা হয়েছে এবং সেটিsetDataHandler()এবংsetFileName()মেথড দিয়ে ইমেইলে যুক্ত করা হয়েছে।
- Multipart:
- সমস্ত অংশ (
text,HTML, এবংattachment) একটিMultipartঅবজেক্টে যুক্ত করা হয়েছে, এবং সেইMultipartঅবজেক্টটি ইমেইলে পাঠানো হয়েছে।
- সমস্ত অংশ (
Multipart Email এর সুবিধা:
- Multiple Content Types: আপনি একাধিক কন্টেন্ট টাইপ যেমন টেক্সট, HTML, ছবি, বা অন্যান্য ফাইল ফরম্যাট (অ্যাটাচমেন্ট) একসাথে পাঠাতে পারেন।
- Flexible Formatting: আপনি ইমেইলটির বিভিন্ন অংশকে পৃথকভাবে কাস্টমাইজ করতে পারেন, যেমন HTML কন্টেন্ট এবং প্লেইন টেক্সট অংশ পৃথকভাবে।
- Attachments: একাধিক ফাইল অ্যাটাচমেন্ট সহ ইমেইল পাঠানো সহজ, এবং ফাইল ফরম্যাটের কোন সীমাবদ্ধতা নেই (যেমন পিডিএফ, ইমেজ, ডকুমেন্ট ইত্যাদি)।
JavaMail API দিয়ে Multipart Email পাঠানোর জন্য কিছু নোটস:
- Content-Type:
MimeMultipartইমেইলের বিভিন্ন অংশের কন্টেন্ট টাইপ (text/plain,text/html,application/octet-streamইত্যাদি) নির্ধারণ করতে ব্যবহৃত হয়। - Attachment Handling: অ্যাটাচমেন্ট ফাইল পাঠানোর সময় সেটির ফাইল নাম এবং টাইপ ঠিকভাবে সেট করতে হবে।
setFileName()এবংsetDataHandler()মেথড ব্যবহার করতে হবে।
সারাংশ:
JavaMail API দিয়ে Multipart Email পাঠানো খুবই কার্যকরী, যেখানে আপনি একাধিক কন্টেন্ট (যেমন Text, HTML, এবং attachments) একসাথে পাঠাতে পারেন। MimeMultipart ব্যবহার করে আপনি ইমেইলের কন্টেন্টকে আলাদা আলাদা অংশে ভাগ করতে পারেন, এবং MimeBodyPart ব্যবহার করে প্রতিটি অংশ তৈরি করে মেইলে যুক্ত করা হয়।
Read more